package cn.tedu.justone.pack01;

import static java.lang.System.gc;

public class ThreadDemo {

    public static void main(String[] args) {
        //结论得出：当遇到有堵塞时，使用多线程避免不必要的等待。
        //demo1();
        demo2();
    }

    //执行第一次（10072ms + 10069ms)
    //执行第二次（10071ms + 10067ms）
    //工作两轮（每轮搬10次），第一轮完成再继续第二轮，计算两轮总时长
    public static void demo1(){
        Thread aa = new Thread( () -> {
            for (int i = 0; i < 2; i++) {
                banZhuan(10);
            }
        });

        aa.start();
    }

    //执行第一次（同时10002ms)，执行第二次（同时10003ms）
    //工作两轮（每轮搬10次），两轮同时进行，计算两轮总时长
    public static void demo2(){
        Thread aa = new Thread( () -> {
            banZhuan(10);
        });

        Thread bb = new Thread( () -> {
            banZhuan(10);
        });

        aa.start();
        bb.start();
    }

    public static void banZhuan(int count){

        System.out.println("【"+Thread.currentThread().getId() + "】开始搬砖工作");
        long startTime = System.currentTimeMillis();

        for (int i = 1; i <= count; i++) {
            System.out.println("第" + i +"次进来搬砖");
            try {
                Thread.sleep(1000);//模拟IO堵塞

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("搬完出去");
        }

        System.out.println(Thread.currentThread().getId() + "结束搬砖工作，共使用了" + (System.currentTimeMillis() - startTime) + "ms");
    }
}
